/*=========================================================================
Elite College as Engines of Upward Mobility: Evidence from Colombia's Ser Pilo Paga
Authors: Juliana Londoño-Vélez, Catherine Rodriguez, Fabio Sánchez
and Luis Esteban Álvarez-Arango

Creation date: June 6th, 2025
--------------------------------------------------------------------------
Figures A15a, A15b, A15c, A15d, A16a and A16b
=========================================================================*/

use "${data}/data_RD", clear
keep codigo_ies hq lq pri pub
drop if codigo_ies==.
gduplicates drop
tempfile tipo
save `tipo'

import excel "${raw}/1.2.5.IPC_Serie_variaciones.xlsx", clear firstrow case(lower)
tostring mesaño, replace
keep if regexm(mesaño,"12$")
replace mesaño=regexr(mesaño,"12$","")
destring mesaño, replace
rename mesaño ano
keep if ano>2011 & ano<2016
keep ano indice
tempfile ipc
save `ipc'

use "${raw}/Base_Colciencas_Inputs_Limpia_V27022018_IESPadre"
rename cod_ies codigo_ies
merge m:1 codigo_ies using `tipo', keep(3) nogen
recode hq lq pri pub (.=0)
gsort codigo_ies ano
drop if ano<2012
by codigo_ies: gen borrar=_N
keep if borrar==4

gen tipo="hq_pri" if pri==1 & hq==1
replace tipo="hq_pub" if pub==1 & hq==1
replace tipo="lq" if lq==1

replace TotalGastOpdeBienestar = TotalGastOpdeBienestar/matriculados
replace TotalGastOp = TotalGastOp/matriculados
replace TotalGastOpdeDocencia = TotalGastOpdeDocencia/matriculados
replace TotalGastOpdeInvestig = TotalGastOpdeInvestig/matriculados

merge m:1 ano using `ipc', keep(3) nogen
replace TotalGastOpdeBienestar=TotalGastOpdeBienestar/indice*100
replace TotalGastOp=TotalGastOp/indice*100
replace TotalGastOpdeDocencia=TotalGastOpdeDocencia/indice*100
replace TotalGastOpdeInvestig=TotalGastOpdeInvestig/indice*100

keep codigo_ies tipo ano total_profes doctorado tiempo_completo TotalGastOpdeBienestar TotalGastOp TotalGastOpdeDocencia TotalGastOpdeInvestig

recode total_profes doctorado tiempo_completo TotalGastOpdeBienestar TotalGastOp TotalGastOpdeDocencia TotalGastOpdeInvestig (0=.)

replace TotalGastOpdeInvestig=. if codigo_ies==4801

glevelsof codigo_ies, local(ies)
foreach x of local ies{
	foreach y in total_profes doctorado tiempo_completo TotalGastOpdeBienestar TotalGastOp TotalGastOpdeDocencia TotalGastOpdeInvestig{
		sum `y' if ano==2014 & codigo_ies==`x'
		replace `y'=(`y'/r(mean)-1)*100 if codigo_ies==`x'
	}
}

foreach x in total_profes doctorado tiempo_completo TotalGastOpdeBienestar TotalGastOp TotalGastOpdeDocencia TotalGastOpdeInvestig{
	gen p=(`x'!=.)
	ereplace p=total(p), by(codigo_ies)
	replace `x'=. if p!=4
	drop p
}

foreach y in total_profes doctorado tiempo_completo TotalGastOpdeBienestar TotalGastOp TotalGastOpdeDocencia TotalGastOpdeInvestig{
	sum `y' if tipo=="lq",d
	replace `y'=. if `y'<r(p1) | `y'>r(p95)
}

foreach x in total_profes doctorado tiempo_completo TotalGastOpdeBienestar TotalGastOp TotalGastOpdeDocencia TotalGastOpdeInvestig{
	gen p=(`x'!=.)
	ereplace p=total(p), by(codigo_ies)
	replace `x'=. if p!=4
	drop p
}

foreach y in total_profes doctorado tiempo_completo TotalGastOpdeBienestar TotalGastOp TotalGastOpdeDocencia TotalGastOpdeInvestig{
	foreach x in hq_pri hq_pub lq{
		tabstat `y' if tipo=="`x'", by(ano) stats(min max mean median N)
	}
}

drop if tipo=="lq"

foreach y in total_profes doctorado tiempo_completo TotalGastOpdeBienestar TotalGastOp TotalGastOpdeDocencia TotalGastOpdeInvestig{
	matrix `y'=J(8,4,.)
	local j=1
	forvalues i=2012/2015{
		foreach x in hq_pri hq_pub {
			cap noi ttest `y'==0 if tipo=="`x'" & ano==`i'
			if _rc==0{
				matrix `y'[`j',1]==`i'
				matrix `y'[`j',2]==r(mu_1)
				matrix `y'[`j',3]==r(mu_1)+1.96*r(se)
				matrix `y'[`j',4]==r(mu_1)-1.96*r(se)
				local j=`j'+1
			}
			if _rc!=0{
				matrix `y'[`j',1]==`i'
				matrix `y'[`j',2]==0
				matrix `y'[`j',3]==0
				matrix `y'[`j',4]==0
				local j=`j'+1
			}			
		}
			
	}
}

gen type=""
forvalues i=1(2)8{
	replace type="hq_pri" in `i'
	replace type="hq_pub" in `=`i'+1'
}

global figures "C:\Users\larango\Dropbox\EvaluacionSPP-GeneracionE\Tables&Figures\Figures\Otros"
global total_profes "Percent change in number of faculty"
global doctorado "Percent change in number of PhD faculty"
global tiempo_completo "Percent change in number of full time faculty"
global TotalGastOpdeBienestar "Percent change in spending on student services per student"
global TotalGastOp "Percent change in total spending per student"
global TotalGastOpdeDocencia "Percent change in total spending on faculty per student"
global TotalGastOpdeInvestig "Percent change in total spending on research per student"

preserve
	local tabs "A15a" "A15b" "A15c" "A15d"
	local i=1
	foreach y in TotalGastOp TotalGastOpdeBienestar TotalGastOpdeDocencia  TotalGastOpdeInvestig{
		local tn: word `i' of "`tabs'"
		svmat `y'
		replace `y'1=`y'1-0.1 if type=="hq_pri"
		replace `y'1=`y'1+0.1 if type=="hq_pub"

		#delimit ;
		twoway 	(scatter `y'2 `y'1 if type=="hq_pri", color(green) m(O))
				(rcap `y'3 `y'4 `y'1 if type=="hq_pri", color(green))
				(scatter `y'2 `y'1 if type=="hq_pub", color(blue) m(T))
				(rcap `y'3 `y'4 `y'1 if type=="hq_pub", color(blue)),
				legend(order(1 "HQ Private" 3 "HQ Public") position(10) ring(0))
				xtitle("Year", size(small)) ytitle("${`y'}", size(small)) 
				yline(0, lc(gray) lpattern(dash) lwidth(thin)) xlabel(2012(1)2015)
				;
		#delimit cr
		graph export "${outcomes}/Fig`tn'.pdf", replace width(20)
		local i=`i'+1
	}
restore

********************************************************************************

forvalues i=2014/2017{
	import excel "${raw}/Docentes/`i'.xlsx", firstrow case(lower) allstring clear
	egen p=concat(año semestre)
	keep códigodelainstitución máximoniveldeformacióndeld tiempodededicacióndeldocente p nodedocentes
	replace máximoniveldeformacióndeld=upper(máximoniveldeformacióndeld)
	replace tiempodededicacióndeldocente=upper(tiempodededicacióndeldocente)
	replace máximoniveldeformacióndeld="DOCTORADO" if regexm(máximoniveldeformacióndeld,"DOCTORAD")
	replace máximoniveldeformacióndeld="OTRO" if máximoniveldeformacióndeld!="DOCTORADO"
	replace tiempodededicacióndeldocente="OTRO" if regexm(tiempodededicacióndeldocente,"TIEMPO COMPLETO")==0
	replace tiempodededicacióndeldocente="TIEMPO COMPLETO" if regexm(tiempodededicacióndeldocente,"TIEMPO COMPLETO")
	destring códigodelainstitución nodedocentes, replace
	collapse (sum) nodedocentes, by(códigodelainstitución máximoniveldeformacióndeld tiempodededicacióndeldocente p)
	reshape wide nodedocentes, i(códigodelainstitución máximoniveldeformacióndeld tiempodededicacióndeldocente) j(p) string
	rename (nodedocentes`i'1 nodedocentes`i'2) (p`i'1 p`i'2)
	tempfile b`i'
	save `b`i''
}

import excel "${raw}/Docentes/2013.xlsx", firstrow case(lower) allstring clear
replace tiempodededicacióndeldocente="OTRO" if tiempodededicacióndeldocente!="TIEMPO COMPLETO"
keep códigodelainstitución máximoniveldeformacióndeld tiempodededicacióndeldocente p20071 - p20132
destring códigodelainstitución p20071 - p20132, replace
replace máximoniveldeformacióndeld="DOCTORADO" if máximoniveldeformacióndeld=="POSTDOCTORAD"
replace máximoniveldeformacióndeld="OTRO" if máximoniveldeformacióndeld!="DOCTORADO"
collapse (sum) p20071 - p20132, by(códigodelainstitución máximoniveldeformacióndeld tiempodededicacióndeldocente)

forvalues i=2014/2017{
	merge 1:1 códigodelainstitución máximoniveldeformacióndeld tiempodededicacióndeldocente using `b`i'', nogen
}
compress

rename 	(códigodelainstitución máximoniveldeformacióndeld tiempodededicacióndeldocente) ///
		(codigo_ies formacion tiempo)

preserve
	use "${data}\data_RD", clear
	keep codigo_ies hq lq pri pub
	drop if codigo_ies==.
	gduplicates drop
	tempfile tipo
	save `tipo'
restore

merge m:1 codigo_ies using `tipo', keep(3) nogen
recode hq lq pri pub (.=0)
greshape long p, i(codigo_ies hq lq pri pub formacion tiempo) j(semestre)
preserve
	collapse (sum) p, by(codigo_ies hq semestre)
	drop if semestre<20101 
	gen n=(p>0 & p!=.)
	tab n
	ereplace n=total(n), by(codigo_ies)
	keep codigo_ies hq n
	gduplicates drop 
	tab n
	tab codigo_ies if hq==1 & n==16 // la mitad de las ies está todo el tiempo. 31 de las acreditadas en 2014
	keep if n>=14
	tempfile k
	save `k'
restore

drop if semestre<20101
merge m:1 codigo_ies using `k', nogen keep(3) keepusing(codigo_ies)

gen full_doctorado=p if formacion=="DOCTORADO" & tiempo=="TIEMPO COMPLETO"
gen full_otros=p if formacion!="DOCTORADO" & tiempo=="TIEMPO COMPLETO"
gen doctorado=p if formacion=="DOCTORADO"
gen otros=p if formacion!="DOCTORADO"
gen full=p if tiempo=="TIEMPO COMPLETO"
gen nofull=p if tiempo!="TIEMPO COMPLETO"
rename p profesores
gen tipo="hq_pri" if pri==1 & hq==1
replace tipo="hq_pub" if pub==1 & hq==1
replace tipo="lq" if lq==1

collapse (sum) full* doctorado otros nofull profesores, by(codigo_ies semestre tipo)

gen lnfull=ln(full)
gen lnnofull=ln(nofull)
glevelsof codigo_ies, local(ies)
foreach x of local ies{
	foreach y in lnfull lnnofull{
		sum `y' if semestre==20142 & codigo_ies==`x'
		replace `y'=`y'-r(mean) if codigo_ies==`x'
	}
}

glevelsof codigo_ies, local(ies)
foreach x of local ies{
	foreach y in full_doctorado full_otros full doctorado otros nofull profesores{
		sum `y' if semestre==20142 & codigo_ies==`x'
		replace `y'=(`y'/r(mean)-1)*100 if codigo_ies==`x'
	}
}

drop if profesores>400 & tipo =="lq" & profesores!=.
drop if tipo =="lq"

glevelsof semestre, local(periodos)
foreach y in full_doctorado full_otros full doctorado otros nofull profesores lnfull lnnofull{
	matrix `y'=J(32,4,.)
	local j=1
	foreach i of local periodos{
		foreach x in hq_pri hq_pub {
			ttest `y'==0 if tipo=="`x'" & semestre==`i'
			matrix `y'[`j',1]==`i'
			matrix `y'[`j',2]==r(mu_1)
			matrix `y'[`j',3]==r(mu_1)+1.96*r(se)
			matrix `y'[`j',4]==r(mu_1)-1.96*r(se)
			local j=`j'+1
		}
			
	}
}

gen type=""
forvalues i=1(2)32{
	replace type="hq_pri" in `i'
	replace type="hq_pub" in `=`i'+1'
}

global lnfull "Log number of full-time faculty (20142 = 0)"
global lnnofull "Log number of part-time faculty (20142 = 0)"
local tabs "A16a" "A16b" 
local i=1
preserve
	foreach y in  lnfull lnnofull{
		local tn: word `i' of "`tabs'"
		svmat `y'
		cap drop periodo
		tostring `y'1, replace
		replace `y'1="" if `y'1=="."
		encode `y'1, gen(periodo)
		replace periodo=periodo-0.1 if type=="hq_pri"
		replace periodo=periodo+0.1 if type=="hq_pub"

		#delimit ;
		twoway 	(scatter `y'2 periodo if type=="hq_pri", color(green) m(O))
				(rcap `y'3 `y'4 periodo if type=="hq_pri", color(green))
				(scatter `y'2 periodo if type=="hq_pub", color(blue) m(T))
				(rcap `y'3 `y'4 periodo if type=="hq_pub", color(blue)),
				legend(order(1 "HQ Private" 3 "HQ Public") position(10) ring(0))
				xtitle("Semester", size(small)) ytitle("${`y'}", size(small)) 
				yline(0, lc(gray) lpattern(dash) lwidth(thin)) xlabel(2(2)16, valuelabel)
				;
		#delimit cr
		graph export "${outcomes}/Fig`tn'.pdf", replace width(20)
		local i=`i'+1
	}
restore
